/* eslint-disable @typescript-eslint/no-empty-interface */
export type UtilityNames =
  | 'p'
  | 'm'
  | 'w'
  | 'h'
  | 'z'
  | 'border'
  | 'grid'
  | 'flex'
  | 'bg'
  | 'text'
  | 'font'
  | 'opacity'
  | 'animate'
  | 'transition'
  | 'transform'
  | 'align'
  | 'justify'
  | 'items'
  | 'block'
  | 'content'
  | 'pos'
  | 'box'
  | 'overflow'
  | 'underline'
  | 'list'
  | 'gradient'
  | 'divide'
  | 'gap'
  | 'ring'
  | 'icon'
  | 'container'
  | 'space'
  | 'table'
  | 'order'
  | 'place'
  | 'display'
  | 'shadow'
  | 'blend'
  | 'filter'
  | 'backdrop'
  | 'cursor'
  | 'outline'
  | 'select'

export type VariantNames =
  | 'hover'
  | 'active'
  | 'focus'
  | 'enabled'
  | 'dark'
  | 'light'
  | 'sm'
  | 'lg'
  | 'md'
  | 'xl'
  | 'xxl'
  | 'first'
  | 'last'
  | 'child'
  | 'root'
  | 'before'
  | 'after'
  | 'all'

export type AttributifyNames<Prefix extends string = ''> =
  | `${Prefix}${UtilityNames}`
  | `${Prefix}${VariantNames}`
  | `${Prefix}${VariantNames}:${UtilityNames}`

export interface AttributifyAttributes extends Partial<Record<AttributifyNames, string>> {}
